/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: LianBao
 * Date: 2024-09-02
 * Time: 20:22
 */

/**
 * 题目名称：
 * 手写一个死锁代码
 * 题目内容：
 * 提供：可以通过 synchronized 或者 Lock 来实现一个死锁代码。
 *
 *
 *
 * 所谓的死锁就是线程一拥有锁1，线程二拥有锁2，双方在拥有自身锁的同时尝试获取对方的锁，最终两个线程就会进入无线等待的状态，这就是死锁。
 */
public class demo {
    public static void main(String[] args) {
        Object locker1 = new Object();
        Object locker2 = new Object();
        Thread t1 = new Thread(()->{
            synchronized (locker1) {
                System.out.println("线程1对locker1加锁");
                synchronized (locker2) {
                    System.out.println("线程1对locker2加锁");
                }
            }
        });
        Thread t2 = new Thread(()->{
            synchronized (locker2) {
                System.out.println("线程2对locker2加锁");
                synchronized (locker1) {
                    System.out.println("线程2对locker1加锁");
                }
            }
        });
        t1.start();
        t2.start();
    }
}
